package lib.gt.map;

import android.content.Context;
import android.view.LayoutInflater;
import android.widget.FrameLayout;

import com.google.android.maps.MapView;

public abstract class AbsPopupView extends FrameLayout {
	
	private static final String TAG = "AbsPopupView";
	
	public static final int FLOW_POSITION_TOP_CENTER = 11;
	public static final int FLOW_POSITION_CENTER = 22;
	public static final int FLOW_POSITION_BOTTOM_CENTER = 33;

	/**
	 * 構造函數裏已經將layout inflate了，不要重復inflate.
	 * @param context
	 */
	public AbsPopupView(Context context) {
		super(context);
		MapLog.i(TAG, "Constructing PopupView ...");
		final LayoutInflater inflater = LayoutInflater.from(context);
//		final View view = inflater.inflate(getLayoutRes(), null);
//		addView(view, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
		inflater.inflate(getLayoutRes(), this);
		findViews();
	}
	
	/**
	 * 在此方法中更新PopupView的信息
	 * @param overlayData	將overlayData轉化為實現了該接口的POJO，然後再獲取數據去更新PopupView.
	 */
	public abstract void setData(IOverlayData overlayData);
	
	/**
	 * FindViews操作請在這裏做
	 */
	public abstract void findViews();
	
	/**
	 * 在此方法釋放資源.
	 */
	public abstract void release();
	
	/**
	 * 請提供PopupView的layout resource.
	 * @return
	 */
	public abstract int getLayoutRes();
	
	/**
	 * 可以通過重寫此方法設置PopupView的寬度
	 * @return
	 */
	public int getPopupViewWidth() {
		return MapView.LayoutParams.WRAP_CONTENT;
	}
	
	/**
	 * 可以通過重寫此方法設置PopupView的高度
	 * @return
	 */
	public int getPopupViewHeight() {
		return MapView.LayoutParams.WRAP_CONTENT;
	}
	
	/**
	 * 可以通過重寫此方法設置PopupView懸浮的位置，位於目標overlay的上方或中間.<br/>
	 * 默認為中間
	 * @return
	 */
	public int getFlowPosition() {
		return FLOW_POSITION_CENTER;
	}

}
